using System;
using System.Collections.Generic;
using System.Text;
using System.Data;

using RRHH.Competencias.Entities;
using RRHH.Competencias.DataAccessLayer.Generic;

namespace RRHH.Competencias.DataAccessLayer.SqlServerProvider
{
    public class DALSqlServerCapacidadCurso:IDALCapacidadCurso
    {
        
        public DALSqlServerCapacidadCurso()
        {
            
        }

        public void Completar(CapacidadCurso itemCompletar)
        {
            try
            {
                //List<CapacidadCurso> lstCapacidades = Buscar( itemCompletar );

                //if (lstCapacidades.Count > 0)
                //{
                //    itemCompletar.Id = lstCapacidades[0].Id;
                //    itemCompletar.Nombre = lstCapacidades[0].Nombre;
                //    itemCompletar.Descripcion = lstCapacidades[0].Descripcion;

                //    itemCompletar.Tipo = new TipoCapacidad( lstCapacidades[0].Tipo.Id, string.Empty, string.Empty );
                //}
                //else
                //    itemCompletar = null;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }

        public List<CapacidadCurso> Buscar(long? cursoId, long? capacidadId, long? nivelMinimoId, long? nivelMaximoId, long? nivelEsperadoId)
        {
            try
            {
                
                DALSqlServerStoredProcedure stored = new DALSqlServerStoredProcedure("PA_SKILLS_CapacidadCurso_Buscar");

                if(cursoId != null) stored.AgregarParametro("@curso_id", cursoId);
                if (capacidadId != null) stored.AgregarParametro("@capacidad_id", capacidadId);

                if (nivelMinimoId != null) stored.AgregarParametro("@nivelMinimo", nivelMinimoId);
                if (nivelMaximoId != null) stored.AgregarParametro("@nivelMaximo", nivelMaximoId);
                if (nivelEsperadoId != null) stored.AgregarParametro("@nivelEsperado", nivelEsperadoId);

                return CargarLista(stored.ExecuteDataTable());

            }
            catch (Exception ex)
            {
                
                throw new DALException(ex.Message);

            }

        }

        public List<CapacidadCurso> BuscarTodos() 
        {
            try
            {
                DALSqlServerStoredProcedure stored = new DALSqlServerStoredProcedure("PA_SKILLS_CapacidadCurso_BuscarTodos");
                return CargarLista(stored.ExecuteDataTable());
            }
            catch (Exception ex)
            {
                
                throw new DALException(ex.Message);
            }
        }

        public void Guardar(CapacidadCurso item) { }

        public void GuardarOActualizar(CapacidadCurso item) { }

        public void Actualizar(CapacidadCurso item) { }

        public void Borrar(CapacidadCurso item) { }

        public void Activar(CapacidadCurso item) { }

        public void Desactivar(CapacidadCurso item) { }

        private List<CapacidadCurso> CargarLista(DataTable dt) 
        {
            List<CapacidadCurso> lsCapacidadCurso = new List<CapacidadCurso>();

            foreach (DataRow row in dt.Rows)
            {
                Capacidad capacidad = new Capacidad(Convert.ToInt64(row["capacidad_id"]), string.Empty);
                CapacidadCurso item = new CapacidadCurso(capacidad);
                
                item.NivelMinimo = new NivelCapacidad(Convert.ToInt64(row["nivelMinimo"]), string.Empty, string.Empty);
                item.NivelMaximo = new NivelCapacidad(Convert.ToInt64(row["nivelMaximo"]), string.Empty, string.Empty);
                item.NivelEsperado = new NivelCapacidad(Convert.ToInt64(row["nivelEsperado"]), string.Empty, string.Empty);

                lsCapacidadCurso.Add(item);

            }

            return lsCapacidadCurso;


        }

    }
}
